﻿namespace FlyingEye.Come
{
    /// <summary>
    /// COME 群组通知模型
    /// </summary>
    public class ComeGroupNotificationConfigurationModel : ComeNotificationConfigurationModel
    {
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        private ComeGroupNotificationConfigurationModel()
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        {

        }

        public ComeGroupNotificationConfigurationModel(
            Guid id,
            string agentId,
            string templateId,
            string authKey,
            string secret,
            string accessToken,
            string groupName) : base(id, agentId, templateId, authKey)
        {
            Secret = secret;
            AccessToken = accessToken;
            GroupName = groupName;
            UniqueHashKey = CompositeKeyGenerator.GenerateKey(AgentId, TemplateId, AuthKey, Secret, AccessToken);
        }

        public string Secret { get; set; }

        public string AccessToken { get; set; }

        public string GroupName { get; set; }

        private string? _uniqueHashKey;

        /// <summary>
        /// 标志组合唯一
        /// </summary>
        public string UniqueHashKey
        {
            get
            {
                var key = CompositeKeyGenerator.GenerateKey(AgentId, TemplateId, AuthKey, Secret, AccessToken);

                if (_uniqueHashKey != key)
                {
                    _uniqueHashKey = key;
                }

                return _uniqueHashKey;
            }

            private set { _uniqueHashKey = value; }
        }
    }
}
